﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using Volo.Abp.ObjectMapping;

namespace Xms.Abp.ObjectMapping
{
    public interface IXmsAutoObjectMappingProvider: IAutoObjectMappingProvider
    {
        IQueryable<TDestination> ProjectTo<TSource, TDestination>(IQueryable<TSource> source, params Expression<Func<TDestination, object>>[] membersToExpand);
        IQueryable<TDestination> ProjectTo<TDestination>(IQueryable source, object parameters, params Expression<Func<TDestination, object>>[] membersToExpand);
        IQueryable<TDestination> ProjectTo<TSource, TDestination>(IQueryable<TSource> source, IDictionary<string, object> parameters, params string[] membersToExpand);
        IQueryable ProjectTo(IQueryable source, Type destinationType);
        IQueryable ProjectTo(IQueryable source, Type destinationType, IDictionary<string, object> parameters, params string[] membersToExpand);
    }

    public interface IXmsAutoObjectMappingProvider<TContext> : IXmsAutoObjectMappingProvider, IAutoObjectMappingProvider<TContext>
    {

    }
}
